# -*- coding: utf-8 -*-

import time, random
from multiprocessing import Process, Queue

def producer(name, food, q):
    for i in range(3):
        res = '%s%s' % (food, i)
        time.sleep(random.randint(1, 3)) # 模拟生产数据的时间
        q.put(res)
        print('厨师%s生产了%s' % (name, res))

def consumer(name, q):
    while True:
        # 订单都没来还在等呢   生产者往消费者发信号
        res = q.get()
        # 第十个是一个空
        if res is None:
            break
        # 模拟处理数据的时间
        time.sleep(random.randint(1, 3))
        print('吃货%s吃了%s' % (name, res))

if __name__ == '__main__':
    q = Queue()
    # 生产者
    p1 = Process(target=producer, args=('小红', '包子', q))
    p2 = Process(target=producer, args=('小马', '辣椒炒肉', q))
    # 消费者
    c1 = Process(target=consumer, args=('小明', q))
    # 生产者和消费者并发
    p1.start()
    p2.start()
    c1.start()
    # 生产完了
    p1.join()
    p2.join()
    # 发送给队列一个None 发结束信号给消费者
    q.put(None)
    print('主')
